package com.itcam.cli.command;

import cn.hutool.core.io.FileUtil;
import picocli.CommandLine.Command;

import java.io.File;
import java.util.List;

/**
 * @author : Cammy.Wu
 * Description : 查看要生成的原始文件列表信息
 */


/**
 * 🌟 表示查看文件列表的命令类。
 * 该类实现了 Runnable 接口，用于执行查看指定目录下文件列表的操作。
 * 可通过命令行调用此命令来查看文件列表。
 */
@Command(name = "list", description = "查看文件列表", mixinStandardHelpOptions = true)
public class ListCommand implements Runnable {

    /**
     * 🚀 执行查看文件列表的操作。
     * 此方法会获取项目根路径，基于该路径构建目标目录的输入路径，
     * 然后遍历该目录下的所有文件，并将每个文件的路径打印输出。
     */
    @Override
    public void run() {
        // 📂 获取项目的根路径
        String projectPath = System.getProperty("user.dir");
        System.out.println("项目根路径: " + projectPath);

        // 获取项目根路径的父目录，此处代码被注释，暂不使用
        // File parentFile = new File(projectPath).getParentFile();
        // System.out.println(parentFile);

        // 📁 构建输入路径，指向 open-source-code-demo-projects/acm-template 目录
        String inputPath = new File(projectPath, "acm-template").getAbsolutePath();
        System.out.println("目标目录路径: " + inputPath);

        // 🔍 遍历输入路径下的所有文件
        List<File> files = FileUtil.loopFiles(inputPath);

        // 🖨 打印每个文件的路径
        System.out.println("目标目录下的文件列表:");
        for (File file : files) {
            System.out.println(file.getAbsolutePath());
        }
    }
}


